![FSx for NetApp ONTAP の階層化ポリシー、階層化の冷却期間、クラウド取得ポリシー、階層化のしきい値を理解してボリュームを最適化しましょう](https://devio2023-media.developers.io/wp-content/uploads/2023/08/amazon-fsx-for-netapp-ontap.png)
FSx for NetApp ONTAP の階層化ポリシー、階層化の冷却期間、クラウド取得ポリシー、階層化のしきい値を理解してボリュームを最適化しましょう
コーヒーが好きな emi です。
先日以下のブログで、FSx for NetApp ONTAP のプライマリストレージとキャパシティプールストレージの違いや階層化の概要について書きました。
プライマリストレージ階層とキャパシティプールストレージ階層間でデータを移動させることを「階層化」と呼び、どんなルールで階層化するかは「階層化ポリシー」で設定するのですが、階層化ポリシー以外にも階層化に関する設定値がたくさんあり、奥がとても深かったので、図を書きながら理解に努めました。
本記事で解説する機能は以下の 4 つです。
1. 階層化ポリシー
階層化ポリシーは、ボリュームのアクセス頻度に基づきデータブロックがキャパプールストレージ階層にいつ移動されるか、移動されるかどうかを決定します。
ONTAP の世界では、アクセス頻度は「温度(temperature)」と呼ばれることがあります。
ボリュームの「温度(temperature)」は、頻繁にアクセスされると上昇し、アクセスされない場合は低下します。
ボリュームの温度(temperature)が低下(=アクセス頻度が低下)すると、そのデータブロックは「cold」としてマークされ、階層化ポリシーに基づいてキャパプールストレージ階層に移動させることができます。
具体的に設定できる階層化ポリシーの項目は以下の 4 つです。
[Auto]
(自動):アクセス頻度が低いデータを階層化する[Snapshot Only]
(スナップショットのみ):スナップショットのみ階層化する[All]
(すべて):すべてのデータを階層化する[None]
(なし) :階層化しない
[Auto] (自動)
アクセス頻度が低いデータをキャパプールストレージ階層に移動します。FSx コンソールからボリュームを作成するときはデフォルトで[Auto] (自動)になっています。
データを階層化するまでの期間は、「階層化の冷却期間」(デフォルトは 31 日間、2〜183 日の間) で設定することができます。
- キャパプールストレージ階層のデータに対しランダムな読み取り(一般的なファイルアクセスなど)があった場合、データはプライマリストレージ階層に戻ります。
- キャパプールストレージ階層のデータに対しシーケンシャルな読み取り(ウイルス対策スキャンなど、連続した読み取り)があった場合、データはキャパシティプールストレージ階層のまま残ります。
[Snapshot Only] (スナップショットのみ)
スナップショットデータのみをキャパプールストレージ階層に移動します。AWS CLI、FSx API、ONTAP CLI を使用してボリュームを作成するときはデフォルトで[Snapshot Only] (スナップショットのみ)になっています。
データを階層化するまでの期間は、「階層化の冷却期間」(デフォルトは 31 日間、2〜183 日の間) で設定することができます。
キャパプールストレージ階層のスナップショットデータが(ランダム・シーケンシャル問わず)読み取られると、プライマリストレージ階層に戻ります。
[All] (すべて)
メタデータを除くすべてのデータとスナップショットをキャパプールストレージ階層に移動します。
階層化ポリシーが[All] (すべて) のボリュームにデータを書き込むと、最初はプライマリストレージ階層に書き込まれ、バックグラウンドプロセスによってキャパプールストレージ階層に移動されます。
キャパプールストレージ階層のデータが(ランダム・シーケンシャル問わず)読み取られても、プライマリストレージ階層には戻らず、キャパプールストレージ階層のままです。
ファイルのメタデータは常にプライマリストレージ階層に残っていることに注意してください。
階層化により、ファイルデータとスナップショットデータを容量プール階層に移動できます。ただし、ファイルメタデータは常に SSD 階層に残ります。
ボリュームデータの階層化
[None] (なし)
すべてのデータをプライマリストレージ層に保持し、キャパシティプールストレージに移動できないようにします。
他の階層化ポリシー([Auto]、[Snapshot Only] 、[All])を使用した後、階層化ポリシーを[None] (なし)に変更した場合、キャパプールストレージ階層にあったデータは、プライマリストレージ(SSD)の使用率が 90% 未満であれば、バックグラウンドプロセスによってプライマリストレージ階層に移動されます。
詳細は「階層化のしきい値」で後述します。
このバックグラウンドプロセスは、意図的にデータを読み取るか、「クラウド取得ポリシー(Cloud retrieval policies)」を変更することで高速化できます。
「クラウド取得ポリシー(Cloud retrieval policies)」については後述します。
階層化ポリシーのベストプラクティス
ベストプラクティスとして、キャパプールストレージ階層に長期的に保存する予定のデータを移行する場合は 階層化ポリシーを [Auto] (自動) に設定することが推奨されています。
FSx for NetApp ONTAP は重複排除と圧縮の機能をサポートしています。ストレージ効率化の設定をおこなうと、重複排除と圧縮をおこないデータ量を最適化することができます。
ただし、ストレージ効率化の設定をおこなった場合、プライマリストレージ階層(SSD)上のデータに対してのみポストプロセス圧縮と重複除外を実行します。
そのため階層化ポリシーを [All] (すべて) にしてすぐに階層化してしまうと、ポストプロセス圧縮と重複除外が実行される前に階層化されてしまい、データ容量の節約率が低くなってしまいます。
ストレージ効率化の設定をおこない、階層化ポリシーを [Auto] (自動)にすると、ストレージ節約率を最大化できます。
ポストプロセス圧縮と重複除外については以下のブログをご参照ください。
また、データのバックアップはプライマリストレージ階層のデータに対しておこなわれるため、ボリュームの最初に作成するバックアップの転送速度を最大化できます。
バックアップ対象のデータがキャパプールストレージ階層にある場合は、プライマリストレージ階層(SSD)に書き戻す処理が必要になってしまいます。
二回目以降の差分バックアップであればバックアップ量が減るのでプライマリストレージ階層(SSD)に書き戻す処理は少なく済みますが、最初のフルバックアップをする際はプライマリストレージ階層(SSD)にデータがあった方が効率的です。
2. 階層化の冷却期間
階層化の冷却期間とは、プライマリストレージ階層(SSD)のデータがキャパプールストレージ階層に移動する(cold としてマークされる)までの時間です。
2~183 日の範囲に設定できます。デフォルト設定は 31 日間です。
冷却期間は、階層化ポリシー Auto
と Snapshot-only
の場合設定できます。
データは、冷却期間が終了してから 24~48 時間後に階層化されます。
階層化はネットワークリソースを消費するバックグラウンドプロセスであり、クライアント側のリクエストよりも優先度が低くなります。クライアント側のリクエストが続いている場合、階層化アクティビティは制限されます。
3. クラウド取得ポリシー(Cloud retrieval policies)
クラウド取得ポリシー(Cloud retrieval policies)は、キャパプールストレージ階層から読み取られたデータをプライマリストレージ階層(SSD)に戻すタイミングを指定します。
クラウド検索ポリシーを Default 以外に設定すると、クラウド取得ポリシー(Cloud retrieval policies)は階層化ポリシーの取得動作よりも優先されます。
クラウド取得ポリシーは 2023/11/28 現在 ONTAP CLI からのみ設定可能です。
具体的に設定できるクラウド取得ポリシー(Cloud retrieval policies)の項目は以下の 4 つです。
[Default]
(デフォルト):階層化ポリシーに基づいてデータをプライマリストレージ階層に戻す[Never]
(なし):データをプライマリストレージ階層に戻さない[On-read]
(読み取り時):データが読み取られるとデータをプライマリストレージ階層に戻す[Promote]
(プロモート):すべてのデータをプライマリストレージ階層に戻す
[Default] (デフォルト)
階層化ポリシーに基づいて階層化されたデータを取得します。デフォルトのクラウド取得ポリシー(Cloud retrieval policies)は [Default] (デフォルト) になっています。
例えば、階層化ポリシーが [Auto] (自動) で、クラウド取得ポリシーが [Default] (デフォルト) の場合、一般的なファイルアクセスなどのランダムな読み取りにより、データはキャパシティプールストレージからプライマリストレージに自動的に戻されます。
また、階層化ポリシーが [Snapshot Only] (スナップショットのみ) で、クラウド取得ポリシーが [Default] (デフォルト) の場合、ランダム・シーケンシャル問わず読み取りが行われると、データはキャパシティプールストレージからプライマリストレージに自動的に戻されます。
[Never] (なし)
読み取りがシーケンシャルかランダムかに関係なく、階層化されたキャパプールストレージ階層のデータをプライマリストレージ階層に戻しません。
これはボリュームの階層化ポリシーを [All] (すべて) にするのと似ていますが、階層化ポリシー [Auto] (自動)、[Snapshot-only] (スナップショットのみ) と併用することで、データを即時ではなく最小冷却期間に従って階層化し以降キャパプールストレージ階層でデータ保管する、という設定ができます。
[On-read] (読み取り時)
(ランダム・シーケンシャル問わず)データの読み取りが発生した際に、キャパプールストレージ階層のデータをプライマリストレージ階層に戻します。
このポリシーは、階層化ポリシー [All] (すべて) を使用している場合は効果がありません。
[Promote] (プロモート)
キャパプールストレージ階層にあるすべてのデータをプライマリストレージ階層(SSD)に戻します。
データは日次でチェックされ、プライマリストレージ階層に戻ります(日次バックグラウンド階層化スキャナーというものがあるそうです)。
このポリシーは、階層化ポリシー [All] (すべて) を使用している場合は効果がありません。
このポリシーは、頻繁には実行されない周期的なワークロードがあるが、実行時にはプライマリストレージ階層(SSD)のパフォーマンスが必要なアプリケーションにとって有益です。
クラウド取得ポリシー(Cloud retrieval policies)の使い方は以下のブログもご参照ください。
4. 階層化のしきい値
ファイルシステムの SSD ストレージ容量(プライマリストレージ階層)の使用率によって、ONTAP がすべてのボリュームの階層化動作を管理する方法が決まっています。
「うまく階層化できていないな?」と感じた場合は SSD ストレージ容量(プライマリストレージ階層)の使用率を確認し、十分な空き容量があるか確認してみてください。
階層化のしきい値は以下 4 つあります。
- SSD ストレージ容量(プライマリストレージ階層)の使用率 <=50%
- SSD ストレージ容量(プライマリストレージ階層)の使用率 > 50%
- SSD ストレージ容量(プライマリストレージ階層)の使用率 >=90%
- SSD ストレージ容量(プライマリストレージ階層)の使用率 >=98%
SSD ストレージ容量(プライマリストレージ階層)の使用率 <=50%
SSD ストレージ容量の使用率が 50% 以下の場合、プライマリストレージ階層は十分に活用されていないと見なされ、階層化ポリシー [All] (すべて) を使用しているボリュームのみがキャパプールストレージ階層にデータを階層化します。
階層化ポリシーが [Auto] (自動)、[Snapshot Only] (スナップショットのみ) の場合、このしきい値ではデータが階層化されません。
SSD ストレージ容量(プライマリストレージ階層)の使用率 > 50%
階層化ポリシー [Auto] (自動)、[Snapshot-only] (スナップショットのみ) が適用されたボリュームでは、階層化の最小冷却期間に基づいてデータが階層化されます。
階層化ポリシー [All] (すべて) が適用されたボリュームでは、すぐにデータが階層化されます。
通常の挙動ですね。
SSD ストレージ容量(プライマリストレージ階層)の使用率 >=90%
SSD ストレージ容量の使用率が 90% を超えると、FSx for NetApp ONTAP は SSD ストレージ容量のスペース確保を優先します。
階層化ポリシー [Auto] (自動)、[Snapshot-only] (スナップショットのみ) のボリュームのキャパプールストレージ階層からデータを読み取っても、キャパプールストレージ階層のデータはプライマリストレージ階層層に移動されません。
SSD ストレージ容量(プライマリストレージ階層)の使用率 >=98%
SSD ストレージ容量の使用率が 98% を超えると、すべての階層化機能が停止します。
読み取りは引き続き可能ですが、ボリュームへの書き込みはできません。
階層化しきい値を変更する方法もありますが、AWS ドキュメントでは見つからず、NetApp Knowledge Base でも「変更しないことを強く推奨します。」と記載されていますので、階層化のしきい値は変更しないで運用するのがよさそうです。
おわりに
「階層化ポリシー」「階層化の冷却期間」「クラウド取得ポリシー(Cloud retrieval policies)」「階層化のしきい値」について確認してきました。
すべての組み合わせでどのような動作をするのか把握するのは大変なので、FSx for NetApp ONTAP を導入するシステムではどのような要件があるのかを先によく確認し、その要件を満たすにはどのポリシーをどのように組み合わせて適用すればいいのかを考えるとよいでしょう。